Skip to content

feat: rtl for tables#3227

Open
artem-harbour wants to merge 2 commits into
mainfrom
artem/rtl-v6
Open

feat: rtl for tables#3227
artem-harbour wants to merge 2 commits into
mainfrom
artem/rtl-v6

Conversation

@artem-harbour
Copy link
Copy Markdown
Contributor

@artem-harbour artem-harbour commented May 11, 2026

Linear: SD-2810

Phase 5 (RTL Table Stability) is now completed for RTL table interaction and roundtrip reliability.

This PR does not introduce RTL tables from scratch; core support was already in place.
The main work here was stabilization and regression coverage:

  • Confirmed full bidiVisual pipeline behavior (<w:bidiVisual/>tableProperties.rightToLeft)
  • Validated RTL table rendering order and border behavior in the current layout pipeline
  • Verified click-to-position behavior for RTL tables, including empty/padding areas
  • Verified Tab and Shift+Tab table navigation behavior against Word
  • Confirmed export roundtrip preserves RTL table semantics without border-side corruption
  • Fixed RTL resize/drag boundary mapping issues, including handle-to-column targeting and post-resize hover indicator consistency
  • Added regression tests for RTL and LTR table resize/hover flows
  • Added focused behavior and import/export tests using real DOCX fixtures

Overall result: RTL tables are now covered by explicit tests across rendering, interaction, and export paths, with resize/drag behavior stabilized and regression-protected.

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@linear
Copy link
Copy Markdown

linear Bot commented May 11, 2026

SD-2810

@artem-harbour artem-harbour marked this pull request as ready for review May 11, 2026 17:39
@artem-harbour artem-harbour requested a review from a team as a code owner May 11, 2026 17:39
…dex convention

Two review-fix changes on the table-RTL stability work:

1. resize-move / resize-end events now emit the LOGICAL delta (the
   value applied to newWidths), restoring the pre-PR contract for
   external listeners (logging, analytics, undo metadata). The visual
   delta still lives on dragState.constrainedDelta for the in-flight
   preview guideline at line 591. LTR consumers see no behavior change;
   RTL inner-boundary consumers no longer see a sign-flipped payload.

2. Added a load-bearing comment at the right-edge boundary push
   explaining why the reported columnIndex is 0 in RTL and
   columns.length - 1 in LTR. Downstream consumers that need 'is this
   the outer edge?' should key off type === 'right-edge', not on the
   numeric column index.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants